abstract class Student {
    String name;
    int age;
    private char sex;

    Student() {
        name = new String();
        age = 20;
        sex = 'M';
    }

    Student(String name) {
        this.name = name;
    }

    Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    Student(String name, int age, char sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }

    abstract void talk();

    Student show() {
        System.out.printf("name = %s, age = %d, sex = %c\n", name, age, sex);
        return this;
    }
}

class SmallStudent extends Student {
    SmallStudent() {}
    SmallStudent(String name, int age, char sex) {
        super(name, age, sex);
    }

    SmallStudent show() {
        System.out.printf("SmallStudent show ....\n");
        return this;
    }

    void talk() {
        System.out.printf("SmallStudent %s talk...!\n", name);
    }
}

class BigStudent extends Student {
    BigStudent() {}
    BigStudent(String name, int age, char sex) {
        super(name, age, sex);
    }
    void talk() {
        System.out.printf("BigStudent talk....\n");
    }
}

public class AbstractTest {
    static public void run(Student s) {
        s.talk();
    }

    static public void main(String [] args) {
        SmallStudent a = new SmallStudent("张三", 9, 'F');
        BigStudent x = new BigStudent("李四", 20, 'F');

        run(x);
        run(a);
    }
}
